package exercise.基础练习;

import java.util.Scanner;

/**
 * 资源限制
 * 时间限制：1.0s   内存限制：512.0MB
 * 问题描述
 * 　　十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号，分别表示十进制数的0至15。十六进制的计数方法是满16进1，所以十进制数16在十六进制中是10，而十进制的17在十六进制中是11，以此类推，十进制的30在十六进制中是1E。
 * 　　给出一个非负整数，将它表示成十六进制的形式。
 * 输入格式
 * 　　输入包含一个非负整数a，表示要转换的数。0<=a<=2147483647
 * 输出格式
 * 　　输出这个整数的16进制表示
 * 样例输入
 * 30
 * 样例输出
 * 1E
 */
public class B10_十进制转十六进制 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int dec_number = sc.nextInt();
        System.out.println(decToHex(dec_number));
    }

    private static String decToHex(int dec_num) {
        if (dec_num == 0){
            return "0";
        }
        StringBuilder result_set = new StringBuilder();//结果集
        int shang = dec_num;//商
        int mod;//余数
        while (shang != 0) {
            mod = shang % 16;
            shang = shang / 16;
            //将余数追加到结果集
            switch (mod) {
                case 10: result_set.append("A");break;
                case 11: result_set.append("B");break;
                case 12: result_set.append("C");break;
                case 13: result_set.append("D");break;
                case 14: result_set.append("E");break;
                case 15: result_set.append("F");break;
                default: result_set.append(mod);break;
            }
        }
        //将结果集反转才是正确答案
        return result_set.reverse().toString();
    }
}
